﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using JA.Negocios;
using System.IO;
using JA.Negocios.Cadastros;

namespace JA.Web.Apresentacao
{
    public partial class CadastroImovel : System.Web.UI.Page
    {
        UsuarioVO usuarioVO = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            usuarioVO = (UsuarioVO)this.Session["userActive"];
            if (usuarioVO == null || !usuarioVO.cadImo)
                this.Response.Redirect("~/BackOffice.aspx");

            if (!IsPostBack)
            {
                Util.HabilitarCampos(false, this.panelCad);
                Util.HabilitarCampos(false, this.panelCaracteristicas);

                ClienteVO clienteVO = ClienteVO.CreateClienteVO(-1, "Todos");
                List<ClienteVO> clienteVOs = new List<ClienteVO>();
                clienteVOs.Add(clienteVO);
                clienteVOs.AddRange(ModelBO.getClientes());
                this.ddlCliente.DataSource = clienteVOs;
                this.ddlCliente.DataBind();

                ClienteVO cadClienteVO = ClienteVO.CreateClienteVO(-1, "Indefinido");
                List<ClienteVO> cadClienteVOs = new List<ClienteVO>();
                cadClienteVOs.Add(cadClienteVO);
                cadClienteVOs.AddRange(ModelBO.getClientes());
                this.ddlCadCliente.DataSource = cadClienteVOs;
                this.ddlCadCliente.DataBind();

                BairroVO bairroVO = BairroVO.CreateBairroVO(-1, "Todos");
                List<BairroVO> bairroVOs = new List<BairroVO>();
                bairroVOs.Add(bairroVO);
                bairroVOs.AddRange(ModelBO.getBairros());
                this.ddlBairro.DataSource = bairroVOs;
                this.ddlBairro.DataBind();

                TipoVO tipoVO = TipoVO.CreateTipoVO(-1,"Indefinido");
                List<TipoVO> tipoVOs = new List<TipoVO>();
                tipoVOs.Add(tipoVO);
                tipoVOs.AddRange(ModelBO.getTipos());
                this.ddlCadTipo.DataSource = tipoVOs;
                this.ddlCadTipo.DataBind();

                CategoriaVO categoriaVO = CategoriaVO.CreateCategoriaVO(-1,"Indefinido");
                List<CategoriaVO> categoriaVOs = new List<CategoriaVO>();
                categoriaVOs.Add(categoriaVO);
                this.ddlCadCategoria.DataSource = categoriaVOs;
                this.ddlCadCategoria.DataBind();

                UfVO ufVO = UfVO.CreateUfVO("-1","Indefinido");
                List<UfVO> ufVOs = new List<UfVO>();
                ufVOs.Add(ufVO);
                ufVOs.AddRange(ModelBO.getUfs());
                this.ddlCadEstado.DataSource = ufVOs;
                this.ddlCadEstado.DataBind();

                CidadeVO cidadeVO = CidadeVO.CreateCidadeVO(-1, "Indefinido");
                List<CidadeVO> cidadeVOs = new List<CidadeVO>();
                cidadeVOs.Add(cidadeVO);
                this.ddlCadCidade.DataSource = cidadeVOs;
                this.ddlCadCidade.DataBind();

                BairroVO cadBairroVO = BairroVO.CreateBairroVO(-1, "Indefinido");
                List<BairroVO> cadBairroVOs = new List<BairroVO>();
                cadBairroVOs.Add(cadBairroVO);
                this.ddlCadBairro.DataSource = cadBairroVOs;
                this.ddlCadBairro.DataBind();

                this.GridViewCaracteristicas.DataSource = ModelBO.getCaracteristicas();
                this.GridViewCaracteristicas.DataBind();

                this.GridViewAreasComuns.DataSource = ModelBO.getAreaComums();
                this.GridViewAreasComuns.DataBind();

            }
        }

        protected void ddlCadTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            CategoriaVO categoriaVO = CategoriaVO.CreateCategoriaVO(-1, "Indefinido");
            List<CategoriaVO> categoriaVOs = new List<CategoriaVO>();
            categoriaVOs.Add(categoriaVO);

            if (this.ddlCadTipo.Items.Count > 0)
                categoriaVOs.AddRange(ModelBO.getCategorias(null, null, int.Parse(this.ddlCadTipo.SelectedValue)));

            this.ddlCadCategoria.DataSource = categoriaVOs;
            this.ddlCadCategoria.DataBind();
        }

        protected void ddlCadEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            CidadeVO cidadeVO = CidadeVO.CreateCidadeVO(-1, "Indefinido");
            List<CidadeVO> cidadeVOs = new List<CidadeVO>();
            cidadeVOs.Add(cidadeVO);

            if (this.ddlCadEstado.Items.Count > 0)
                cidadeVOs.AddRange(ModelBO.getCidades(null, null, this.ddlCadEstado.SelectedValue));

            this.ddlCadCidade.DataSource = cidadeVOs;
            this.ddlCadCidade.DataBind();
            ddlCadCidade_SelectedIndexChanged(null, null);
        }
        protected void ddlCadCidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            BairroVO bairroVO = BairroVO.CreateBairroVO(-1, "Indefinido");
            List<BairroVO> bairroVOs = new List<BairroVO>();
            bairroVOs.Add(bairroVO);

            if (this.ddlCadCidade.Items.Count > 0)
                bairroVOs.AddRange(ModelBO.getBairros(null, null, null, int.Parse(this.ddlCadCidade.SelectedValue)));

            this.ddlCadBairro.DataSource = bairroVOs;
            this.ddlCadBairro.DataBind();
        }

        /// <summary>
        /// Manipula o evento do bot&atilde;o btnSalvar
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnSalvar_Click(object sender, EventArgs e)
        {

            //Declara objetos
            ImovelVO imovelVO = null;
            bool novoRegistro = false;

            try
            {

                //Verifica se o ID é nulo, se sim = cadastro novo
                if (string.IsNullOrEmpty(this.txtCadId.Text))
                {
                    imovelVO = ImovelVO.CreateImovelVO();
                    imovelVO.cadastro = DateTime.Now;
                    imovelVO.cadastradoPor = usuarioVO.usuario;

                    novoRegistro = true;
                }
                //Recupera dados para serem alterados
                else
                {
                    //Recupera dados
                    imovelVO = ModelBO.getImovel(Int32.Parse(this.txtCadId.Text), null);
                }

                imovelVO.titulo = this.txtCadTitulo.Text;
                imovelVO.descricao = this.txtCadDescricao.Text;
                imovelVO.endereco = this.txtCadEndereco.Text;
                imovelVO.enderecoNumero = this.txtCadNumero.Text;
                imovelVO.complemento = this.txtCadComplemento.Text;
                imovelVO.CEP = this.txtCadCEP.Text;
                try { imovelVO.vlrTotVda = decimal.Parse(this.txtCadVlrTotVen.Text.Replace(".","")); }
                catch (Exception ex) {imovelVO.vlrTotVda = 0;}
                imovelVO.permuta = this.cbCadPermuta.Checked;
                try { imovelVO.areaUtil = decimal.Parse(this.txtCadAreaUtil.Text.Replace(".", "")); }
                catch (Exception ex) {imovelVO.areaUtil =  0;}
                try { imovelVO.areaTotal = decimal.Parse(this.txtCadAreaTotal.Text.Replace(".", "")); }
                catch (Exception ex) {imovelVO.areaTotal = 0;}
                try { imovelVO.vlrCond = decimal.Parse(this.txtCadVlrCondominio.Text.Replace(".", "")); }
                catch (Exception ex) {imovelVO.vlrCond = 0;}
                try { imovelVO.quartos = int.Parse(this.txtCadQuartos.Text); }
                catch (Exception ex) {imovelVO.quartos = 0;}
                try { imovelVO.suites = int.Parse(this.txtCadSuites.Text); }
                catch (Exception ex) {imovelVO.suites = 0;}
                try { imovelVO.vagasGaragem = int.Parse(this.txtCadVagasGaragem.Text); }
                catch (Exception ex) {imovelVO.vagasGaragem = 0;}
                try { imovelVO.andares = int.Parse(this.txtCadAndares.Text); }
                catch (Exception ex) {imovelVO.andares = 0;}
                try { imovelVO.unidAndar = int.Parse(this.txtCadUnidAndar.Text); }
                catch (Exception ex) {imovelVO.unidAndar = 0;}
                imovelVO.ativo = this.cbCadAtivo.Checked;
                imovelVO.publicar = this.cbCadPublicar.Checked;
                imovelVO.obs = this.txtCadObs.Text;
                imovelVO.tipoVO.idTipo = int.Parse(this.ddlCadTipo.SelectedValue);
                imovelVO.categoriaVO.idCategoria = int.Parse(this.ddlCadCategoria.SelectedValue);
                imovelVO.bairroVO.cidade.uf.siglaUf = this.ddlCadEstado.SelectedValue;
                imovelVO.bairroVO.cidade.idCidade = int.Parse(this.ddlCadCidade.SelectedValue);
                imovelVO.bairroVO.idBairro = int.Parse(this.ddlCadBairro.SelectedValue);
                imovelVO.clienteVO.idCliente = int.Parse(this.ddlCadCliente.SelectedValue);

                imovelVO.edicao = DateTime.Now;
                imovelVO.editadoPor = usuarioVO.usuario;

                //Chama metodo para salvar ou criar novo registro
                if (novoRegistro)
                    ModelBO.newImovel(imovelVO);
                else
                    ModelBO.setImovel(imovelVO);

                List<CaracteristicaVO> caracteristicaVOs = new List<CaracteristicaVO>();
                foreach (GridViewRow gvr in this.GridViewCaracteristicas.Rows)
                {
                    if (((CheckBox)gvr.FindControl("cbxCaracteristica")).Checked)
                    {
                        CaracteristicaVO caracteristicaVO = CaracteristicaVO.CreateCaracteristicaVO();
                        caracteristicaVO.idCaracteristica = Int32.Parse(gvr.Cells[1].Text);
                        caracteristicaVOs.Add(caracteristicaVO);
                    }
                }
                ModelBO.getImovelXCaracteristicas(imovelVO);
                ModelBO.delImovelxCaracteristicas(imovelVO.caracteristicaVOs,imovelVO.idImovel);
                ModelBO.newImovelxCaracteristicas(caracteristicaVOs, imovelVO.idImovel);

                List<AreaComumVO> areaComumVOs = new List<AreaComumVO>();
                foreach (GridViewRow gvr in this.GridViewAreasComuns.Rows)
                {
                    if (((CheckBox)gvr.FindControl("cbxAreaComum")).Checked)
                    {
                        AreaComumVO areaComumVO = AreaComumVO.CreateAreaComumVO();
                        areaComumVO.idAreaComum = Int32.Parse(gvr.Cells[1].Text);
                        areaComumVOs.Add(areaComumVO);
                    }
                }
                ModelBO.getImovelXAreaComuns(imovelVO);
                ModelBO.delImovelxAreaComuns(imovelVO.areaComumVOs, imovelVO.idImovel);
                ModelBO.newImovelxAreaComuns(areaComumVOs, imovelVO.idImovel);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro salvo com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelCad);
                ddlCadTipo_SelectedIndexChanged(null, null);
                ddlCadEstado_SelectedIndexChanged(null, null);
                this.ltCadastradoPor.Text = "";
                this.ltEditadoPor.Text = "";
                this.ltDataCadastro.Text = "";
                this.ltDataEdicao.Text = "";

                foreach (GridViewRow gvr in this.GridViewCaracteristicas.Rows)
                {
                    ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
                }
                foreach (GridViewRow gvr in this.GridViewAreasComuns.Rows)
                {
                    ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
                }
                
                // Trava bot&atilde;o de edi&ccedil;&atilde;o
                this.btnEditar.Enabled = false;

                // Trava bot&atilde;o de exclusao
                this.btnExcluir.Enabled = false;

                // Desabilita o bot&atilde;o salvar
                this.btnSalvar.Enabled = false;

                // Habilida o botao novo
                this.btnNovo.Enabled = true;

                Util.HabilitarCampos(false, this.panelCad);
                Util.HabilitarCampos(false, this.panelCaracteristicas);
                Util.HabilitarCampos(false, this.panelAreasComuns);
                this.GridViewCaracteristicas.Enabled = false;
                this.GridViewAreasComuns.Enabled = false;

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        /// <summary>
        /// Manipula o evento do bot&atilde;o btnPesquisa
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnPesquisa_Click(object sender, EventArgs e)
        {
            //Declara objetos
            int? idImovel = null;
            string titulo = null;
            int? idCliente = null;
            int? idBairro = null;
            string cep = null;
            string endereco = null;
            bool? ativo = null;
            bool? publicado = null;

            try
            {
                if (!string.IsNullOrEmpty(this.txtId.Text))
                {
                    idImovel = Int32.Parse(this.txtId.Text);
                }
                if (!string.IsNullOrEmpty(this.txtTitulo.Text))
                {
                    titulo = this.txtTitulo.Text;
                }
                if (!this.ddlCliente.SelectedValue.Equals("-1"))
                {
                    idCliente = int.Parse(this.ddlCliente.SelectedValue);
                }
                if (!this.ddlBairro.SelectedValue.Equals("-1"))
                {
                    idBairro = int.Parse(this.ddlBairro.SelectedValue);
                }
                if (!String.IsNullOrEmpty(this.txtCEP.Text))
                {
                    cep = this.txtCEP.Text;
                }
                if (!String.IsNullOrEmpty(this.txtEndereco.Text))
                {
                    endereco = this.txtEndereco.Text;
                }
                if (this.rbAtivoSim.Checked) ativo = true;
                if (this.rbAtivoNao.Checked) ativo = false;
                if (this.rbPublicoSim.Checked) publicado = true;
                if (this.rbPublicoNao.Checked) publicado = false;


                //
                List<ImovelVO> imovelVOs = ModelBO.getImoveis(idImovel, titulo, null, null, null, null, idBairro, null, null, idCliente, ativo, publicado, endereco, cep);
                imovelVOs.Sort((a, b) => b.idImovel.CompareTo(a.idImovel));
                //imovelVOs.Sort(delegate(ImovelVO a, ImovelVO b) { return b.idImovel.CompareTo(a.idImovel); });
                this.grvResultado.DataSource = imovelVOs;

                //Vincula os dados
                this.grvResultado.DataBind();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Manipula o evento do bot&atilde;o btnCancelar
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            this.tabImovel.ActiveTabIndex = 0;

            // Desabilita os campos para edi&ccedil;&atilde;o
            Util.HabilitarCampos(false, this.panelCad);
            Util.HabilitarCampos(false, this.panelCaracteristicas);
            Util.HabilitarCampos(false, this.panelAreasComuns);
            this.GridViewAreasComuns.Enabled = false;

            // Destrava bot&atilde;o de edi&ccedil;&atilde;o
            this.btnEditar.Enabled = !string.IsNullOrEmpty(this.txtCadId.Text);

            // Detrava bot&atilde;o de exclusao
            this.btnExcluir.Enabled = !string.IsNullOrEmpty(this.txtCadId.Text);

            // Detrava bot&atilde;o de novo
            this.btnNovo.Enabled = true;

            // Desabilita o bot&atilde;o salvar
            this.btnSalvar.Enabled = false;

        }

        protected void grvResultado_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                ImageButton imgbExcluir = e.Row.FindControl("imgbExcluir") as ImageButton;

                imgbExcluir.Attributes.Add("onclick", "return confirma_exclusao();");

            }
        }

        protected void imgbVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelVO imovelVO = null;
            int idImovel = 0;

            try
            {
                //
                idImovel = int.Parse(((ImageButton)sender).CommandArgument);

                //
                imovelVO = ModelBO.getImovel(idImovel, null);

                this.txtCadId.Text = idImovel.ToString();
                this.txtCadTitulo.Text = imovelVO.titulo;
                this.ltCadastradoPor.Text = imovelVO.cadastradoPor;
                this.ltEditadoPor.Text = imovelVO.editadoPor;
                this.ltDataCadastro.Text = ((DateTime)imovelVO.cadastro).ToString();
                this.ltDataEdicao.Text = (imovelVO.edicao == null ? "" : ((DateTime)imovelVO.edicao).ToString());
                this.txtCadDescricao.Text = imovelVO.descricao;
                this.txtCadEndereco.Text = imovelVO.endereco;
                this.txtCadNumero.Text = imovelVO.enderecoNumero;
                this.txtCadComplemento.Text = imovelVO.complemento;
                this.txtCadCEP.Text = imovelVO.CEP;
                this.txtCadVlrTotVen.Text = String.Format("{0:n2}", imovelVO.vlrTotVda);
                this.cbCadPermuta.Checked = imovelVO.permuta;
                this.txtCadAreaUtil.Text = String.Format("{0:n0}", imovelVO.areaUtil);
                this.txtCadAreaTotal.Text = String.Format("{0:n0}", imovelVO.areaTotal);
                this.txtCadVlrCondominio.Text = String.Format("{0:n2}", imovelVO.vlrCond);
                this.txtCadQuartos.Text = imovelVO.quartos.ToString();
                this.txtCadSuites.Text = imovelVO.suites.ToString();
                this.txtCadVagasGaragem.Text = imovelVO.vagasGaragem.ToString();
                this.txtCadAndares.Text = imovelVO.andares.ToString();
                this.txtCadUnidAndar.Text = imovelVO.unidAndar.ToString();
                this.cbCadAtivo.Checked = imovelVO.ativo;
                this.cbCadPublicar.Checked = imovelVO.publicar;
                this.txtCadObs.Text = imovelVO.obs;
                this.ddlCadTipo.SelectedValue = imovelVO.tipoVO.idTipo.ToString();
                ddlCadTipo_SelectedIndexChanged(null, null);
                this.ddlCadCategoria.SelectedValue = imovelVO.categoriaVO.idCategoria.ToString();
                this.ddlCadEstado.SelectedValue = imovelVO.bairroVO.cidade.uf.siglaUf;
                ddlCadEstado_SelectedIndexChanged(null, null);
                this.ddlCadCidade.SelectedValue = imovelVO.bairroVO.cidade.idCidade.ToString();
                ddlCadCidade_SelectedIndexChanged(null, null);
                this.ddlCadBairro.SelectedValue = imovelVO.bairroVO.idBairro.ToString();
                this.ddlCadCliente.SelectedValue = imovelVO.clienteVO.idCliente.ToString();

                ModelBO.getImovelXCaracteristicas(imovelVO);
                 foreach (GridViewRow gvr in this.GridViewCaracteristicas.Rows)
                {
                    ((CheckBox)gvr.Cells[0].FindControl("cbxCaracteristica")).Checked = (imovelVO.caracteristicaVOs != null && (imovelVO.caracteristicaVOs.Find(pc => pc.idCaracteristica == Int32.Parse(gvr.Cells[1].Text)) != null));
                }
                 ModelBO.getImovelXAreaComuns(imovelVO);
                 foreach (GridViewRow gvr in this.GridViewAreasComuns.Rows)
                 {
                     ((CheckBox)gvr.Cells[0].FindControl("cbxAreaComum")).Checked = (imovelVO.areaComumVOs != null && (imovelVO.areaComumVOs.Find(pc => pc.idAreaComum == Int32.Parse(gvr.Cells[1].Text)) != null));
                 }
                 //
                this.tabImovel.ActiveTabIndex = 1;

                //
                Util.HabilitarCampos(false, this.panelCad);
                Util.HabilitarCampos(false, this.panelCaracteristicas);
                Util.HabilitarCampos(false, this.panelAreasComuns);
                this.GridViewAreasComuns.Enabled = false;

                //
                this.btnEditar.Enabled = true;

                //
                this.btnExcluir.Enabled = true;

                //
                this.btnNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        /// <summary>
        /// Manipula o evento editar do web form
        /// </summary>
        /// <param name="sender">Objeto disparador de evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnEditar_Click(object sender, EventArgs e)
        {
            // Habilita os campos para edi&ccedil;&atilde;o
            Util.HabilitarCampos(true, this.panelCad);
            Util.HabilitarCampos(true, this.panelCaracteristicas);
            Util.HabilitarCampos(true, this.panelAreasComuns);
            this.GridViewCaracteristicas.Enabled = true;
            this.GridViewAreasComuns.Enabled = true;

            // Trava apenas o text box do ID
            this.txtCadId.Enabled = false;

            // Trava bot&atilde;o de edi&ccedil;&atilde;o
            this.btnEditar.Enabled = false;

            // Trava bot&atilde;o de exclusao
            this.btnExcluir.Enabled = false;

            // Trava bot&atilde;o de novo
            this.btnNovo.Enabled = false;

            // Habilita o bot&atilde;o salvar
            this.btnSalvar.Enabled = true;

            this.txtCadTitulo.Focus();
        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            //Limpa formulario, para a entrada de novo registro
            Util.LimparCampos(this.panelCad);
            ddlCadTipo_SelectedIndexChanged(null, null);
            ddlCadEstado_SelectedIndexChanged(null, null);
            this.ltCadastradoPor.Text = "";
            this.ltEditadoPor.Text = "";
            this.ltDataCadastro.Text = "";
            this.ltDataEdicao.Text = "";
            foreach (GridViewRow gvr in this.GridViewCaracteristicas.Rows)
            {
                ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
            }
            foreach (GridViewRow gvr in this.GridViewAreasComuns.Rows)
            {
                ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
            }

            // Habilita os campos para edi&ccedil;&atilde;o
            Util.HabilitarCampos(true, this.panelCad);
            Util.HabilitarCampos(true, this.panelCaracteristicas);
            Util.HabilitarCampos(true, this.panelAreasComuns);
            this.GridViewCaracteristicas.Enabled = true;
            this.GridViewAreasComuns.Enabled = true;

            // Trava apenas o text box do ID
            this.txtCadId.Enabled = false;

            // Trava bot&atilde;o de edi&ccedil;&atilde;o
            this.btnEditar.Enabled = false;

            // Trava bot&atilde;o de exclusao
            this.btnExcluir.Enabled = false;

            // Trava bot&atilde;o de novo
            this.btnNovo.Enabled = false;

            // Habilita o bot&atilde;o salvar
            this.btnSalvar.Enabled = true;

            this.txtCadTitulo.Focus();

        }

        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            //Declara objetos
            ImovelVO imovelVO = null;

            try
            {
                //Cria objeto
                imovelVO = ImovelVO.CreateImovelVO();

                imovelVO.idImovel = Int32.Parse(this.txtCadId.Text);

                //Chama metodo para salvar ou criar novo registro
                ModelBO.delImovel(imovelVO);

                //remover as fotos deste imovel tambem
                FotoBO fotoBO = new FotoBO();
                fotoBO.DeletaImovelImagens(fotoBO.RecuperaFotos(null, imovelVO.idImovel));

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro excluido com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelCad);
                ddlCadTipo_SelectedIndexChanged(null, null);
                ddlCadEstado_SelectedIndexChanged(null, null);
                this.ltCadastradoPor.Text = "";
                this.ltEditadoPor.Text = "";
                this.ltDataCadastro.Text = "";
                this.ltDataEdicao.Text = "";
                foreach (GridViewRow gvr in this.GridViewCaracteristicas.Rows)
                {
                    ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
                }
                foreach (GridViewRow gvr in this.GridViewAreasComuns.Rows)
                {
                    ((CheckBox)gvr.Cells[0].Controls[1]).Checked = false;
                }

                // Trava bot&atilde;o de edi&ccedil;&atilde;o
                this.btnEditar.Enabled = false;

                // Trava bot&atilde;o de exclusao
                this.btnExcluir.Enabled = false;

                // Desabilita o bot&atilde;o salvar
                this.btnSalvar.Enabled = false;

                // Habilida o botao novo
                this.btnNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            
        }

    }
}
